﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using estudent.Models;

namespace estudent.Controllers
{
    public class OdjavaIzpitaReferentkaController : Controller
    {
        estudentEnt db = null;
        //
        // GET: /OdjavaIzpitaReferentka/

        public ActionResult Index()
        {
            string role = Session["Role"].ToString();
            if (role.CompareTo("refe") == 0)
            {
                ViewData["navodilo"] = "Poiščite študenta, ki ga želite odjaviti od izpita.";
                ViewData["namen"] = "odjavaIzpitaReferentka";

                return View("IskanjeStudent");
            }
            else
            {
                var id = Session["Name"].ToString();
                Roki(id);
                return View("OdjavaIzpitaReferentka");
            }

        }


        public ActionResult Roki(string id)
        {
            db = new estudentEnt();
            DateTime nov = DateTime.Now;

            string role = Session["Role"].ToString();

            DateTime nov1 = DateTime.Now;
            if (role.CompareTo("refe") != 0)
            {
                nov1 = nov.AddDays(3);
            }

            string tabela = "<tr align='center'><th>Datum</th><th>Ura</th><th>Profesor</th><th>Predmet</th><th></th></tr>";

            var roki = db.PrijaveNaIzpits
                    .Where(p => p.Vpisi.username == id)
                    //.Where(p => p.datumRoka >= nov)
                    .Where(p => p.ocena == null)
                    .Select(p => p)
                    .OrderBy(p => p.datumRoka);

            bool potekel = false;

            foreach (var ele in roki)
            {
                var prof1 = db.Poucujes
                    .Where(p => p.idPoucuje == ele.idPoucuje)
                    .Select(p => p.SProfesorji)
                    .FirstOrDefault();
                var prof2 = db.Poucujes
                    .Where(p => p.idPoucuje == ele.idPoucuje)
                    .Select(p => p.SProfesorji1)
                    .FirstOrDefault();
                var prof3 = db.Poucujes
                    .Where(p => p.idPoucuje == ele.idPoucuje)
                    .Select(p => p.SProfesorji2)
                    .FirstOrDefault();

                var profesor = "";
                if (prof1 != null)
                {
                    profesor = prof1.imeProfesor + " " + prof1.priimekProfesor + " - " + prof1.sProfesor;
                    if (prof2 != null)
                    {
                        profesor += "<br>" + prof2.imeProfesor + " " + prof2.priimekProfesor + " - " + prof2.sProfesor;
                        if (prof3 != null)
                            profesor += "<br>" + prof3.imeProfesor + " " + prof3.priimekProfesor + " - " + prof3.sProfesor;
                    }
                }
                else if (prof2 != null)
                {
                    profesor = prof2.imeProfesor + " " + prof2.priimekProfesor + " - " + prof2.sProfesor;
                    if (prof3 != null)
                        profesor += "<br>" + prof3.imeProfesor + " " + prof3.priimekProfesor + " - " + prof3.sProfesor;
                }
                else if (prof3 != null)
                    profesor = prof3.imeProfesor + " " + prof3.priimekProfesor + " - " + prof3.sProfesor;

                var predmet = db.Poucujes
                    .Where(p => p.idPoucuje == ele.idPoucuje)
                    .Select(p => p.sPredmeti.imePredmeta)
                    .FirstOrDefault();

                tabela += "<tr  align='center'>";
                tabela += "<td>" + ele.datumRoka.ToShortDateString() + "</td>";
                tabela += "<td>" + ele.datumRoka.ToShortTimeString() + "</td>";
                tabela += "<td>" + profesor + "</td>";
                tabela += "<td>" + predmet + "</td>";
                if (ele.datumRoka >= nov1 || role.CompareTo("refe") == 0)
                {
                    tabela += "<td><b><a href='Odjavi/" + ele.idVpisa + "/" + ele.idPoucuje + "/" + ele.datumRoka.ToBinary() + "'>ODJAVI</a></b></td>";
                }
                else
                {
                    potekel = true;
                    tabela += "<td align='center'>*</td>";
                }

            }

            var stud = "";
            var potek = "";
            if (potekel)
                potek = "<b>*</b> Rok za odjavo je potekel!";

            if (role.CompareTo("refe") == 0)
            {
                var student = db.Studentis
                    .Where(p => p.username == id)
                    .FirstOrDefault();
                stud = "<br><b>" + student.ime + " " + student.priimek + " - " + student.username + "</b><br>";
                potek = "";
            }

            if (roki.Count() < 1)
                tabela = "Ni rokov za odjavo!";
            ViewData["uspeh"] = ViewData["uspeh"];
            ViewData["student"] = stud;
            ViewData["roki"] = tabela;
            ViewData["rokpotekel"] = potek;
            return View("OdjavaIzpitaReferentka");
        }
        public ActionResult Odjavi(int id, string pouc, string pred, string datum)
        {
            db = new estudentEnt();

            DateTime nov = DateTime.FromBinary(long.Parse(datum));
            int poucuje = Int32.Parse(pouc);

            var brisanjePrijav = db.PrijaveNaIzpits
                .Where(p => p.idPoucuje == poucuje)
                .Where(p => p.datumRoka == nov)
                .Where(p => p.idVpisa == id);
            try
            {
                foreach (var prij in brisanjePrijav)
                {
                    db.PrijaveNaIzpits.DeleteObject(prij);
                }

            }
            catch (Exception e)
            {
                ViewData["neki"] = e.Message;
            }

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                ViewData["uspeh"] = "Izbris ni bil uspešen. Morda je bil rok že zbrisan. Tehnični podatki napake:" + e.Message;
                return View("Odziv");
            }

            ViewData["uspeh"] = "<script type='text/javascript'>alert('Odjava uspela'); </script>";
            View("OdjavaIzpitaReferentka");

            var us = db.Vpisis
                .Where(p => p.idVpisa == id)
                .Select(p => p.username)
                .FirstOrDefault();
            
            return RedirectToAction("Roki/" + us);
        }

    }
}
